]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ibusManager: Use async await instead of callbacks
authorSundeep Mediratta <smedius@gmail.com>
Thu, 1 Aug 2024 23:18:33 +0000 (19:18 -0400)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 5 Sep 2024 11:09:38 +0000 (13:09 +0200)
Code that uses async/await is often easier to follow than callbacks, in
particular as part of the code is already async.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3439>

js/misc/ibusManager.js
js/ui/keyboard.js
js/ui/status/keyboard.js

index 9e5eadbbb3b2a7503deeb08d749459118d27e584..a4931cfb9c322db28aa541b7ed4f19b0dc9c31a5 100644 (file)
@@ -275,15 +275,12 @@ class IBusManager extends Signals.EventEmitter {
         return this._engines.get(id);
     }
 
-    async _setEngine(id, callback) {
+    async _setEngine(id) {
         // Send id even if id == this._currentEngineName
         // because 'properties-registered' signal can be emitted
         // while this._ibusSources == null on a lock screen.
-        if (!this._ready) {
-            if (callback)
-                callback();
+        if (!this._ready)
             return;
-        }
 
         try {
             await this._ibus.set_global_engine_async(id,
@@ -293,12 +290,9 @@ class IBusManager extends Signals.EventEmitter {
             if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
                 logError(e);
         }
-
-        if (callback)
-            callback();
     }
 
-    async setEngine(id, callback) {
+    async setEngine(id) {
         if (this._oskCompletion)
             this._preOskEngine = id;
 
@@ -307,9 +301,9 @@ class IBusManager extends Signals.EventEmitter {
             return;
 
         if (this._oskCompletion)
-            this.setCompletionEnabled(false, callback);
+            await this.setCompletionEnabled(false);
         else
-            await this._setEngine(id, callback);
+            await this._setEngine(id);
     }
 
     preloadEngines(ids) {
@@ -339,7 +333,7 @@ class IBusManager extends Signals.EventEmitter {
                 });
     }
 
-    setCompletionEnabled(enabled, callback) {
+    async setCompletionEnabled(enabled) {
         /* Needs typing-booster available */
         if (enabled && !this._engines.has(TYPING_BOOSTER_ENGINE))
             return false;
@@ -354,9 +348,9 @@ class IBusManager extends Signals.EventEmitter {
 
         if (enabled) {
             this._preOskEngine = this._currentEngineName;
-            this._setEngine(TYPING_BOOSTER_ENGINE, callback);
+            await this._setEngine(TYPING_BOOSTER_ENGINE);
         } else if (this._preOskEngine) {
-            this._setEngine(this._preOskEngine, callback);
+            await this._setEngine(this._preOskEngine);
             delete this._preOskEngine;
         }
         return true;
index 182b88e8e2fa1a0cb0167792e911e99dbb085ab4..908655951484072ed1550141fece9866a853a5d4 100644 (file)
@@ -2105,12 +2105,18 @@ class KeyboardController extends Signals.EventEmitter {
         Main.inputMethod.commit(str);
     }
 
-    set oskCompletion(enabled) {
+    async _setOskCompletion(enabled) {
         if (this._oskCompletionEnabled === enabled)
             return;
 
         this._oskCompletionEnabled =
-            IBusManager.getIBusManager().setCompletionEnabled(enabled, () => Main.inputMethod.update());
+            await IBusManager.getIBusManager().setCompletionEnabled(enabled);
+
+        Main.inputMethod.update();
+    }
+
+    set oskCompletion(enabled) {
+        this._setOskCompletion(enabled);
     }
 
     keyvalPress(keyval) {
index e8dc1bafe5ad289a9e3ed5cfe17a225a363efaf7..d900d3ed718b7c944f25ec53bdf2deca7b6bf72d 100644 (file)
@@ -495,7 +495,7 @@ export class InputSourceManager extends Signals.EventEmitter {
         this._changePerWindowSource();
     }
 
-    activateInputSource(is, interactive) {
+    async activateInputSource(is, interactive) {
         // The focus changes during holdKeyboard/releaseKeyboard may trick
         // the client into hiding UI containing the currently focused entry.
         // So holdKeyboard/releaseKeyboard are not called when
@@ -519,10 +519,10 @@ export class InputSourceManager extends Signals.EventEmitter {
         else
             engine = 'xkb:us::eng';
 
+        await this._ibusManager.setEngine(engine);
         if (!this._reloading)
-            this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
-        else
-            this._ibusManager.setEngine(engine);
+            KeyboardManager.releaseKeyboard();
+
         this._currentInputSourceChanged(is);
 
         if (interactive)